package middlewares

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"go.uber.org/zap"
	"project_api/user_web/global"
	"project_api/user_web/proto/user"
	"project_api/user_web/utils"
)

func TokenAuth() gin.HandlerFunc {
	return func(c *gin.Context) {
		// 我们这里jwt鉴权取头部信息 x-token 登录时回返回token信息 这里前端需要把token存储到cookie或者本地localSstorage中 不过需要跟后端协商过期时间 可以约定刷新令牌或者重新登录
		token := c.Request.Header.Get("token")
		if token == "" {
			utils.CommonResponse(c, 2, "未登录", nil)
			c.Abort()
			return
		}
		fmt.Println(token)
		userToken, err := global.UserSrvClient.GetUserToken(c, &user.GetUserTokenInfo{
			Token: token,
		})
		fmt.Println(userToken)
		if err != nil {
			utils.CommonResponse(c, 2, "获取token错误", nil)
			zap.S().Errorw("[tokenAuth] GetToken error", "msg", err.Error())
			c.Abort()
			return
		}
		c.Set("userId", userToken.UserId)
		c.Next()
	}
}
